package buffer1;

import java.io.*;
import java.util.ArrayList;

/*练习一:对象的序列化
        描述:定义一个学生类，包含姓名，年龄，性别等成员变量，提供setters和getters方法以及构造方法。
        在测试类中创建一个学生对象，给学生对象的三个成员变量赋值。然后将该对象保存到当前项目根目录下的stu.txt文件中。
        答案
        练习二:对象的反序列化
        描述:将上一题保存到stu.txt文件中的学生对象读取出来。
       */
public class Test11 {//定义一个测试类

    public static void main(String[] args) throws Exception {//main方法入口。抛出异常
        BufferedWriter bw = new BufferedWriter(new FileWriter("IO\\copy"));//创建字符缓冲输出流对象
        ArrayList<Student> list = new ArrayList<>();//创建集合对象存储学生信息
        list.add(new Student("诸葛亮", "36"));//将学生对象存储到集合中
        list.add(new Student("曹操", "37"));//将学生对象存储到集合中
        for (Student student : list) {//遍历集合得到每一个学生对象
            StringBuilder sb = new StringBuilder();//创建StringBulider对象
            sb.append(student.getName()).append("||").append(student.getAge());//使用apend方法进行拼接
            bw.write(sb.toString());//使用字符输出流进行写入并将StringBuilder对象转化为String 对象
            bw.newLine();//换行
            bw.flush();//刷新
        }
        bw.close();//关闭资源
        BufferedReader br = new BufferedReader(new FileReader("IO\\copy"));//创建字符缓冲输入流对象读取指定文件目录下 的数据
        String line;//定义读取行数变量

        while ((line = br.readLine()) != null) {//使用while循环进行读取数据
            System.out.println(line);//因为读取的String类型的数据所以可以直接输出
        }
    }
}
